たかがボタン、されどボタン ~button要素から深ぼるボタンUIの定義について~
https://gyazo.com/3aa846df22d905f5a1ef7379cd7521b2
https://fortee.jp/burikaigi-2026/proposal/8d122b65-c135-41d2-8f1c-315a499843c6
BuriKaigi 2026登壇内容
今やWebサイトやアプリケーションに必ず存在するようになった「ボタン」というUI。私たちは毎日当たり前のように実装していますが、「ボタンとは何か?」と聞かれたら、明確に定義できるでしょうか?
<a>タグをボタン風に装飾したUI、type属性を忘れて意図せず画面をリロードさせる<button>、そして歴史の彼方に消えつつある<input type="button">...。なぜこんなにも多様な『ボタンのようなもの』が生まれ、そしてバグの温床となるのでしょうか。
私はこれまで、マークアップのセマンティクスを重視する立場として、こうした「残念な」実装が溢れる現状を常にもどかしく感じてきました。「動けば良い」という流れの中で、なぜ「本来あるべき姿」が失われてしまうのでしょうか。
このセッションでは、「type属性の指定漏れ」でバグを踏んだ経験や、デザイナーと「ここはリンクか?ボタンか?」で実装方針が割れた際の苦い議論を基に、このボタンUIを深掘りします。
HTML仕様やアクセシビリティの観点から「ボタンとは何か」を再定義すると同時に、私が実務のコードレビューや設計議論で直面してきた葛藤と、それを乗り越えるための知見を共有します。
この発表を経て「たかが」と思っていたボタンUIについての考えを変えるきっかけになるかもしれません。
期待する聴者に持ち帰ってほしい内容
「ボタンとは何か?」という問いに対し、セマンティクス・振る舞い・アクセシビリティ の観点から自信を持って説明できるようになる
type属性の指定漏れによる意図せぬフォーム送信バグを、未来永劫なくすことができる
リンクをボタンのように見せるUI(リンクボタン)を実装するときに配慮すべきことに気づける
そもそもボタンって何?
ABOUT FACE インタラクションデザインの本質におけるボタンの話
21章 デザイン詳細:コントロールとダイアログ
即座にアクションを命令するための命令的コントロールにおけるイディオム
ボタンをクリックすると関連付けたアクションが実行
押せるというシグニファイアがある
スキューモフィズムからフラットデザインへの変化
立体的ではなくなったのでリンクのそれと判別がしづらくなった
どちらも「押せそうなこと」はわかるが…
GUI
ボタンUIについて見かけるものを挙げる
送信ボタン
リンクボタン
ラジオボタン
トグルボタン
ブックマークボタン
アイコンボタン
ブラウザとしてのUIにあるものを挙げる
進むボタン、戻るボタン、更新ボタン
ボタンの実装はどうする?
まさかdivでやってないよね
生成AIのほうがキレイなマークアップをしてくれますよ
正しい実装をするために仕様を覗きに行こう
buttonの定義
HTML Living Standard
https://html.spec.whatwg.org/multipage/form-elements.html#the-button-element
aとの違いを明示する
UI の実装で考えていること, 気をつけたいこと
違うこと
暗黙のrole
disabledできない
同じようにできること
フォーカス
属性値
disabled
form
command、commandforの存在について
type
これについては熱弁したいyamanoku.icon
button要素のtype属性について気にしたくないけどそうもいかない話 | yamanoku Advent Calendar 2023
buttonタグ、なぜデフォルトがsubmitなのか - hacomono TECH BLOG
ESLintでのチェック対象としても増えている
Investigate making the invalid state of <button type> _not_ submit · Issue #10462 · whatwg/html · GitHub
デフォルトをtype=buttonにしようぜっていう提案
初期スタイルについて
<button>とかのスタイルを消して書き直すときに考えることの備忘録
Why don't <button> HTML elements have a CSS cursor pointer by default?
デザインシステムに学ぶ、ボタンの「cursor: pointer」問題
汎用的なボタンを実装する話
何から参考にする?
デジタル庁デザインシステム
ボタン(概要)|デジタル庁デザインシステムβ版
APGから学ぶ
https://www.w3.org/WAI/ARIA/apg/patterns/button/
Headless UIから学ぶ
https://ui.shadcn.com/docs/components/button
https://react-aria.adobe.com/Button
https://chakra-ui.com/docs/components/button
HTMLの属性に被らせてはいけない
ニューモーフィズム、グラスモーフィズム
モバイルにおけるガイドライン
マテリアルデザイン
HIG
The History of User Interfaces | Hacker News
取り上げられているUIの範囲が狭いという批判